let
    // Références aux tables sources
    TableClients   = Clients,    
    TableVentes   = #"Détail des commandes",    
    TableLivres  = Livres,   

    // Jointure Ventes et Client pour récupérer la ville
    AvecVille = Table.NestedJoin( TableVentes, "Code client", TableClients, "Code client", "Client", JoinKind.LeftOuter),
    ExpandVille = Table.ExpandTableColumn( AvecVille, "Client", {"Ville"}, {"Ville"}),

    // Jointure avec Produit pour récupérer la catégorie
    AvecCategorie = Table.NestedJoin( ExpandVille, "Numéro livre", TableLivres, "Numéro livre", "Titre", JoinKind.LeftOuter),
    ExpandCategorie = Table.ExpandTableColumn( AvecCategorie, "Titre", {"Catégorie"}, {"Catégorie"}),

    // Agrégation : somme des quantités par Ville et Catégorie
    RésultatAgrégé = Table.Group( ExpandCategorie, {"Ville", "Catégorie"},{{"Quantité", each List.Sum([Quantité]), Int32.Type}}),
   
   // Tri par Ville du client (optionnel)
    Trier = Table.Sort( RésultatAgrégé, {{"Ville", Order.Ascending}})
in
    Trier